home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / powerd / modules.lha / modules / libraries / hdwrench.m < prev    next >
Encoding:
Text File  |  2002-01-23  |  3.8 KB  |  156 lines

  1. MODULE 'exec/libraries','devices/hardblocks'
  2.  
  3. OBJECT HDWLibrary
  4.   Lib:Library,
  5.   SegList:ULONG,
  6.   Flags:ULONG,
  7.   ExecBase:APTR,                  /* pointer to exec base  */
  8.   relocs:PTR TO LONG,            /* pointer to relocs.    */
  9.   origbase:PTR TO HDWLibrary,    /* pointer to original library base  */
  10.   numjmps:LONG
  11.  
  12. #define HDWBaseName   'hdwrench.library'
  13.  
  14. /* === General Constant Defines === */
  15. /* Artificial unassigned value for the RDB structures. */
  16.  
  17. CONST UNASSIGNED=-131,
  18.  RDBEND=-1,
  19.  DEFAULT_RDBBLOCKSHI=63
  20.  
  21. /* === Structure & Typedefs === */
  22.  
  23. OBJECT ValidIDstruct
  24.   ready[16]:UBYTE,    // Tests ready and first block read
  25.   there[16]:UBYTE     // Tests as "there" but fails other tests
  26.  
  27. /* Actual disk read write return structure: */
  28. OBJECT rw_return
  29.   success:UBYTE,          // Error code
  30.   failed_word:UBYTE,      // 0 on reads.
  31.   block_written:UBYTE     // 0 on reads.
  32.  
  33. ENUM success=0,
  34.     success_on_retry_write,
  35.     success_on_retry_read,
  36.     failed_on_write,
  37.     failed_on_reread,
  38.     illegal_command,
  39.     io_command_failure,
  40.     scsi_command_failure,
  41.     out_of_memory,
  42.     no_more_disk_blocks,
  43.     rdsk_not_located,
  44.     io_device_not_open,
  45.     invalid_blocksize_found,
  46.     no_callback_hook,
  47.     user_aborted,
  48.     operation_not_permitted
  49.  
  50. CONST E_NOERROR=0,
  51.  E_ILLEGAL_SLASH=200,
  52.  E_EOF_IN_COMMENT=201,
  53.  E_ILLEGAL_STAR=202,
  54.  E_TOKEN_TO_LONG=203,
  55.  E_MEMORY_PANIC=204,
  56.  E_PREMATURE_EOF=205,
  57.  E_MISSING_EQUALS=206,
  58.  E_ILLEGAL_T_F=207,
  59.  E_ILLEGAL_TOKEN=208,
  60.  E_DUPLICATE_DISK=209,
  61.  E_NOT_LEGAL_NAME=210,
  62.  E_EXCEEDED_SIZE_LIM=211,
  63.  E_FILE_WRITE_ERROR=212,
  64.  E_TOOMANY_FS=213,
  65.  E_FSAVE_CONFUSION=214,
  66.  E_FS_CANNOT_OPEN=215,
  67.  E_LOST_IN_RDB_SPACE=216,
  68.  E_FS_WRITE_ERROR=217,
  69.  E_MULTIPLE_RDSKS=218,
  70.  E_RDSK_NOT_1ST=219,
  71.  E_NO_RDBS_LOADED=220,
  72.  E_RDBS_ALREADY_IN=221,  // RDBs already loaded.
  73.  E_FAILED_FILEOPEN=222,
  74.  E_FILE_READ_FAILED=223,
  75.  E_FILE_NOT_RDBS=224,
  76.  E_NO_BLOCKSIZE_SPEC=225,
  77.  E_FILE_WRITE_FAILED=226,
  78.  E_MEMORYP_NULL=227,   // prospective "memp" is null
  79.  E_ILLEGAL_BLOCKSIZE=228,
  80.  E_INSUFFICIENT_MEM=229,
  81.  E_RENUMBER_FAILED=230,
  82.  E_BLOCKS_EXCEEDED=231,  // Too many RDB blocks
  83.  E_INCOMPLETE_FSDESC=232,
  84.  E_FS_NOT_FOUND=233,
  85.  E_LIST_SCREWEDUP=234,
  86.  E_NO_SUCH_DIR=235,
  87.  E_EXALL_ERROR=236,
  88.  E_UNIT_DIFFERS=237,
  89.  E_CRIT_VALUE_UNDEF=238,
  90.  T_RENUMBER_LEFT=300,
  91.  W_DUPLICATE_FS=100,
  92.  W_FS_NO_WRITE=101,
  93.  DRIVEINIT=0,
  94.  FILESYSTEM=1
  95.  
  96. OBJECT DefaultsArray
  97.   TotalBlocks:ULONG,
  98.   BytesPerBlock:UWORD,
  99.   BlocksPerSurface:UWORD,
  100.   Surfaces:UWORD,
  101.   Cylinders:UWORD,
  102.   UnusedBlocks:UWORD
  103.  
  104. CONST DA_NOERRORS=0,
  105.  DA_NO_CAPACITY_REPORT=1,
  106.  DA_NO_OPTIMIZE=2,
  107.  DA_BAD_MODESENSE_4=4,
  108.  DA_BAD_MODESENSE_3=8,
  109.  DA_FAILED=256,
  110.  DA_NO_DRIVE_OPEN=DA_FAILED,
  111.  DA_RIDICULOUS_VALUES=(DA_FAILED << 1),
  112.  DA_OPTIMIZE=1, /* Optimize storage if possible */
  113.  DA_HUGE=2, /* Allow partitioning huge disks */
  114.  DA_HF_WAY=4, /* Use the old HardFrame algorithm */
  115.  INQBUFSIZE=36,      /* Standard size of Inquiry buffer */
  116.  MAGC_INQBUFSIZE=56  /* Special Inquiry Buffer Size. */
  117.  
  118. OBJECT bootblock
  119.   Node:MinNode,
  120.   allocsize:LONG,
  121.   BlockNum:LONG,
  122.   Changed:WORD,
  123.   unit:LONG,
  124.   DeviceName[32]:CHAR,
  125.   RWErrors:rw_return,
  126.   wflag:BOOL,
  127.   spares[2]:BYTE,
  128.   NEWUNION Data
  129.     RDB:RigidDiskBlock,
  130.     PB:PartitionBlock,
  131.     FHB:FileSysHeaderBlock,
  132.     BB:BadBlockBlock,
  133.     Bytes[512]:UBYTE,
  134.     Words[256]:UWORD,
  135.     Longs[128]:ULONG
  136.   ENDUNION
  137.  
  138. OBJECT HDCallbackMsg
  139.   devicename:PTR TO UBYTE,
  140.   board:LONG,
  141.   address:LONG,
  142.   lun:LONG,
  143.   messagestring:PTR TO UBYTE,
  144.   extra:LONG,
  145.   param1:LONG,
  146.   param2:LONG,
  147.   param3:LONG
  148.  
  149. ENUM EXTRA_BEFORE_TEST=0,
  150.  EXTRA_AFTER_TEST,
  151.  EXTRA_BEFORE_FORMAT,         /* with no way to stop once you start.*/
  152.  EXTRA_BEFORE_VERIFY,        /* Setup the verify requester and return "go ahead" */
  153.  EXTRA_UPDATE_VERIFY,         /* New string for requester - return any Abort received */
  154.  EXTRA_VERIFY_REASSIGN,       /* New string - return "Yes" or "No" */
  155.  EXTRA_VERIFY_FINISHED      /* Notify user, accept OK, close */
  156.